#include "widget.h"
#include "qpushbutton.h"
#include "mypushbutton.h"
#include "QDebug"
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{

    //在自己类中，调用函数，不用使用this（但是必须类中自己的函数，不管是继承还是自己定义）
    resize(500,400);
    setWindowTitle("窗口");
    //可以用this表示当前类指针来添加到对象树里
    QPushButton * btn1= new QPushButton("按钮",this);
    btn1->move(100,100);
    btn1->resize(50,50);

    //信号和槽
    QMetaObject::Connection connection=connect(btn1,&QPushButton::clicked,this,[=](){
        QWidget::close();
    });

     myPushButton * btn2=new myPushButton(this);
     btn2->setText("按钮2");
     //btn2->setParent(this);
     btn2->move(200,100);
     btn2->resize(50,50);
     //传函数地址,要是操作不是自己，槽函数是别人，要添加接收信号的指针在第三个参数。
     connect(btn2,&myPushButton::clicked,this,&QWidget::close);


     myPushButton * btn3=new myPushButton(this);
     btn3->setText("按钮3");
     //btn2->setParent(this);
     btn3->move(300,100);
     btn3->resize(50,50);

//    Teacher *astrr=new Teacher(this);
//    Stduent *sr=new Stduent(this);
//    connect(astrr,&Teacher::xiake,sr,&Stduent::Test);
//     emit astrr-> xiake();

        atr=new Teacher(this);
        sr=new Stduent(this);
//       connect(atr,&Teacher::xiake,sr,&Stduent::Test);

        void(Teacher:: *xiakee)(QString)=&Teacher::xiake;
         void(Stduent:: *Test1)(QString)=&Stduent::Test;
         connect(atr,xiakee,sr,Test1);
         //这里是要传函数地址，不是你自己的类调用，所以要指明作用域
          connect(btn3,&myPushButton::clicked,this,&Widget::classisover);

          disconnect(btn2,&myPushButton::clicked,this,&QWidget::close);
          disconnect(connection);
}
void  Widget::classisover(){
        emit atr-> xiake("公报鸡丁");
}
Widget::~Widget()
{
    qDebug()<<"窗口析构";
}


